package com.ruoyi.business.service;

import java.util.List;

import com.ruoyi.business.VO.AcLeaseInfoListVO;
import com.ruoyi.business.VO.AcLeaseInfoVO;
import com.ruoyi.business.domain.AcLeaseInfo;

/**
 * 租赁台账管理Service接口
 *
 * @author ruoyi
 * @date 2025-01-22
 */
public interface IAcLeaseInfoService
{
    /**
     * 查询租赁台账管理
     *
     * @param leaseId 租赁台账管理主键
     * @return 租赁台账管理
     */
    public AcLeaseInfo selectAcLeaseInfoByLeaseId(Long leaseId);

    /**
     * 查询租赁台账管理列表
     *
     * @param acLeaseInfo 租赁台账管理
     * @return 租赁台账管理集合
     */
    public List<AcLeaseInfo> selectAcLeaseInfoList(AcLeaseInfo acLeaseInfo);
    public List<AcLeaseInfo> selectAcLeaseInfoListReal(AcLeaseInfo acLeaseInfo);

//    public List<AcLeaseInfo> selectAcLeaseInfoListDetail(AcLeaseInfo acLeaseInfo);


    public AcLeaseInfo selectAcLeaseInfoListDetail(AcLeaseInfo acLeaseInfo);

//    public AcLeaseInfo selectAcLeaseInfoListDetail1(AcLeaseInfo acLeaseInfo);

    /**
     * 新增租赁台账管理
     *
     * @param acLeaseInfo 租赁台账管理
     * @return 结果
     */
    public int insertAcLeaseInfo(AcLeaseInfo acLeaseInfo);

    /**
     * 修改租赁台账管理
     *
     * @param acLeaseInfo 租赁台账管理
     * @return 结果
     */
    public int updateAcLeaseInfo(AcLeaseInfo acLeaseInfo);

    /**
     * 批量删除租赁台账管理
     *
     * @param leaseIds 需要删除的租赁台账管理主键集合
     * @return 结果
     */
    public int deleteAcLeaseInfoByLeaseIds(Long[] leaseIds);

    /**
     * 删除租赁台账管理信息
     *
     * @param leaseId 租赁台账管理主键
     * @return 结果
     */
    public int deleteAcLeaseInfoByLeaseId(Long leaseId);

    // *********************************************************
    public List<AcLeaseInfoListVO> getAcLeaseInfoList(AcLeaseInfo acLeaseInfo);

    /**
     * 查询租赁信息详情
     * **/
    public AcLeaseInfoVO getAcLeaseInfoByLeaseId(Long leaseId);

    /**
     * 租赁状态定时器
     * 每天 00：00：00秒时执行该定时器
     * 判断租赁截止时间与当天时间
     * 当租赁截止时间小于当天时间时，租赁状态为到期
     * **/
    public void updateAcLeaseInfoByCurrentDate();

    public void updateAcLeaseByCurrentDate();

    List<AcLeaseInfo> selectLeaseNum();

    List<AcLeaseInfo> selectLeaseType();

    List<AcLeaseInfo> selectLeaseTerm();

    List<AcLeaseInfo> selectLeaseAssetType();

    List<AcLeaseInfo> selectLeaseAreaTop5();

    List<AcLeaseInfo> selectLeaseChangeType();
}
